home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #3 / Amiga Plus CD - 2002 - No. 03.iso / AmigaPlus / Tools / Development / envCPP31 / c++ / rexx / flavour.rexx < prev    next >
Encoding:
OS/2 REXX Batch file  |  2002-01-01  |  5.1 KB  |  236 lines

  1. /* rexx macro */
  2.  
  3. options results                             /* enable return codes     */
  4.  
  5. if (left(address(), 6) ~= "GOLDED") then    /* not started by GoldEd ? */
  6.  
  7.     address 'GOLDED.1'
  8.  
  9. 'LOCK CURRENT RELEASE=4'                    /* lock GUI, gain access   */
  10.  
  11. if (RC ~= 0) then
  12.  
  13.     exit
  14.  
  15. options failat 6                            /* ignore warnings         */
  16.  
  17. signal on syntax                            /* ensure clean exit       */
  18.  
  19. /* ------------------------- INSERT YOUR CODE HERE: -------------------- */
  20.  
  21. /* INPUT: SOFTWARE/K,FLAVOUR/K (supported values: SAS/C,SAS/C-GNUMAKE,VBCC,DICE,DICE-GNUMAKE,STORMC,GENERIC) */
  22.  
  23. parse arg SOFTWARE FLAVOUR .
  24.  
  25. SOFTWARE = upper(SOFTWARE)
  26. FLAVOUR  = upper(FLAVOUR )
  27.  
  28. if (SOFTWARE = "") then
  29.  
  30.     SOFTWARE = "GENERIC"
  31.  
  32. if (FLAVOUR = "") then
  33.  
  34.     FLAVOUR = "C"
  35.  
  36. 'QUERY CAT'
  37.  
  38. if (RESULT = "deutsch") then do
  39.  
  40.     STRING.sMAKEFILE     = "Makefile auswählen"
  41.     STRING.sUNSUPPORTED  = "Diese Funktion wird von der aktuellen|C/C++-Umgebung nicht unterstützt !"
  42.     STRING.sOPENERROR    = "Zugriff auf makefile nicht möglich !"
  43.     STRING.sNOCHANGES    = "Hinweis: Makefile wurde nicht|geändert"
  44. end
  45. else do
  46.  
  47.     STRING.sMAKEFILE     = "Select Makefile"
  48.     STRING.sUNSUPPORTED  = "This function is not supported|by the current C/C++ mode !"
  49.     STRING.sOPENERROR    = "Can not access the makefile !"
  50.     STRING.sNOCHANGES    = "Note: Makefile remains unchanged"
  51. end
  52.  
  53. if (SOFTWARE = "GCC") then do
  54.  
  55.     'QUERY PATH VAR=PATH'
  56.  
  57.     R = pragma('D', PATH)
  58.  
  59.     /* locate makefile for current compiler */
  60.  
  61.     call findmakefile(SOFTWARE)
  62.  
  63.     if (MAKEFILE = "") then do
  64.  
  65.         'REQUEST FILE TITLE="' || STRING.sMAKEFILE || '" PATH="' || PATH || '" VAR=MAKEFILE'
  66.  
  67.         if (RC ~= 0) then do
  68.  
  69.             'UNLOCK'
  70.  
  71.             exit
  72.         end
  73.     end
  74.  
  75.     if (FLAVOUR = "C") then do
  76.  
  77.         FIND       = "g++"
  78.         SUBSTITUTE = "gcc"
  79.     end
  80.     else do
  81.  
  82.         FIND       = "gcc"
  83.         SUBSTITUTE = "g++"
  84.     end
  85.  
  86.     if (MAKEFILE ~= "") then do
  87.  
  88.         /* read and update makefile */
  89.  
  90.         LINES = 0
  91.  
  92.         if open('MAKEFILE', MAKEFILE, 'READ') then do
  93.  
  94.             CHANGES = 0
  95.  
  96.             do until eof('MAKEFILE')
  97.  
  98.                 DATA = readln('MAKEFILE')
  99.  
  100.                 /* look for compiler in indented lines and in definition of CC */
  101.  
  102.                 if (LEFT(DATA, 4) = '9'X || FIND) then do
  103.  
  104.                     DATA = '9'X || SUBSTITUTE || substr(DATA, 5)
  105.  
  106.                     CHANGES = CHANGES + 1
  107.                 end
  108.  
  109.                 if (UPPER(LEFT(DATA, 2)) = "CC") then do
  110.  
  111.                     POS = INDEX(DATA, FIND)
  112.  
  113.                     if ((POS ~= 0) & (POS < 8)) then do
  114.  
  115.                         DATA = substr(DATA, 1, POS - 1) || SUBSTITUTE || substr(DATA, POS + 3)
  116.  
  117.                         CHANGES = CHANGES + 1
  118.                     end
  119.                 end
  120.  
  121.                 LINES = LINES + 1
  122.  
  123.                 CONFIG.LINES = DATA
  124.             end
  125.  
  126.             R = close('MAKEFILE')
  127.  
  128.             if (CHANGES ~= 0) then do
  129.  
  130.                 /* save updated makefile */
  131.  
  132.                 if open('MAKEFILE', MAKEFILE, 'WRITE') then do
  133.  
  134.                     if (LINES ~= 0) then do
  135.  
  136.                         do LINE=1 to (LINES - 1)
  137.  
  138.                             R = writeln('MAKEFILE', CONFIG.LINE)
  139.                         end
  140.                     end
  141.  
  142.                     R = close('MAKEFILE')
  143.                 end
  144.             end
  145.  
  146.             if (CHANGES = 0) then
  147.  
  148.                 'REQUEST PROBLEM="' || STRING.sNOCHANGES || '"'
  149.         end
  150.         else
  151.             'REQUEST PROBLEM="' || STRING.sOPENERROR || '"'
  152.     end
  153. end
  154. else
  155.     'REQUEST PROBLEM="' || STRING.sUNSUPPORTED || '"'
  156.  
  157. /* ---------------------------- END OF YOUR CODE ----------------------- */
  158.  
  159. 'UNLOCK' /* VERY important: unlock GUI */
  160.  
  161. EXIT
  162.  
  163. SYNTAX:
  164.  
  165. SAY "Sorry, error line" SIGL ":" ERRORTEXT(RC) ":-("
  166.  
  167. 'UNLOCK'
  168.  
  169. EXIT
  170.  
  171. /* /// "findmakefile" */
  172.  
  173. findmakefile: procedure expose STRING. PATH MAKEFILE
  174.  
  175.     parse arg SOFTWARE
  176.  
  177.     MAKEFILE = ""
  178.  
  179.     /* will any makefile do or is a specific type requested ? */
  180.  
  181.     'QUERY OPTIONCHOOSEMAKEFILE VAR=OPTIONCHOOSEMAKEFILE'
  182.  
  183.     if (OPTIONCHOOSEMAKEFILE = "TRUE") then do
  184.  
  185.         'REQUEST FILE TITLE="' || STRING.sMAKEFILE || '" PATH="' || PATH || '" VAR=MAKEFILE'
  186.  
  187.         if (RC ~= 0) then do
  188.  
  189.             'UNLOCK'
  190.  
  191.             exit
  192.         end
  193.     end
  194.     else do
  195.  
  196.         if (SOFTWARE = "") then do
  197.  
  198.             if (exists("dmakefile")) then
  199.  
  200.                 MAKEFILE = "dmakefile";
  201.  
  202.             else if (exists("smakefile")) then
  203.  
  204.                 MAKEFILE = "smakefile";
  205.  
  206.             else if exists("makefile") then
  207.  
  208.                 MAKEFILE = "makefile";
  209.         end
  210.         else do
  211.  
  212.             if (SOFTWARE = "DICE") then do
  213.  
  214.                 if (exists("dmakefile")) then
  215.  
  216.                     MAKEFILE = "dmakefile";
  217.             end
  218.             else if (SOFTWARE = "SAS/C") then do
  219.  
  220.                 if (exists("smakefile")) then
  221.  
  222.                     MAKEFILE = "smakefile";
  223.             end
  224.             else do /* GENERIC, VBCC, SAS/C-GNUMAKE, DICE-GNUMAKE */
  225.  
  226.                 if exists("makefile") then
  227.  
  228.                     MAKEFILE = "makefile";
  229.             end
  230.         end
  231.     end
  232.  
  233.     return
  234.  
  235. /* /// */
  236.